2019/10/11
Cube 是一種資料模型的概念,把資料依照各種維度建立起來的資料模型稱為 Cube。
在設計開發資料模型時,我們一定要先了解星狀 (Star) 和雪花狀 (snowflake) Schema 資料結構,這是建立 Cube 的基礎。(Star / Snowflake 可參考下圖)
Multi-Dimensional Data Model 是在主測量值的外圍會有很多關聯的維度表格,依照分析使用需求上的設計,形成的資料結構關聯圖就好像是 Star 或是 Snowflake 一樣的架構,使用者隨時都可以從任何一個維度視角來查詢資料,這樣就成形了一個所謂 Cube 的概念了。
Multi-Dimensional Data Model 有兩個主要的元素,一個是 Dimension,我們稱它為「維度」:另一個是 Measure,我們稱它為「量值」,這兩個元素各司其職,互相輔佐,讓資料可以組合成 Cube 的資料結構型態,更為接近使用者的視角來看資料,這樣的 Cube 資料結構讓使用者在做資料的上鑽、下探、切片、取磚、查詢資料時,能夠用各種維度來做切割,更為接近使用者的視野角度來看資料。
先來談談 Dimension
維度 (Dimension) 就是在表示商務上的個體,這些個體又包含有屬性和階層,在資料庫中的設計就是一個表格 (Table),這些維度是為了用來查詢切割計算集成量值的時候,使用者可以查詢的視角,還有使用者可以分析的顆粒度大小,所以,維度的設計必須要跟使用者的資料分析需求和應用息息相關,從使用者的角度來設計維度,這才是符合 Cube 設計的精神和核心。
Dimension(維度)通常會定義資料屬性的關聯到 Measure(量值),但並非一定,分析計算的顆粒度屬性通常設定為鍵值 (Key),不是所以的維度都需要關聯到量值,反向來看,所有的量值也不一定會有相同的維度關係和資料集成邏輯。
再來談談 Measure (Fact)
量值 (Measure) 就是資料庫中所謂的 Fact Table,一個 Fact Table 可能設計表示成的一個 Measure Group(量值群),也就是多個 Measures,通常都是針對單一主題來設計 Measure Group。
Measure 是設計用來計算的資料,通常會透過一些集成函數來匯總資料,依照維度階層的設計方法來查詢切割存取資料,得到資料分析所需要的資訊。
Cube 是一種由維度 (Dimensions) 和量值 (Measures) 組合而成的資料模型概念,或是稱之為多維度模型 (Multidimensional Model),互相關聯的 dimensions 形成了 Cube 的最佳設計方法,通常設計的時候,我們會在資料庫 dimensions 設計開發完成之後,再來設計 Cube。
一個 SSAS 的 Multi-Dimensional Data Model Package 組成如下圖:
PS : 一般人誤解「建立資料模型就是在建立 Cube」,所以常常聽到說“做資料分析要先建 Cube”,“沒有 Cube 就不叫做資料分析模型”,但是,如果你使用的不是多維度模型架構,那這個資料模型就不會有 Cube 的資料結構概念存在,如果你用的是表格式資料模型,我們通常也不會稱這個資料模型是 Cube。